package cn.edu.zsc.blms.service.impl.array.collection;

import cn.edu.zsc.blms.App;
import cn.edu.zsc.blms.exception.EntityNotExistException;
import cn.edu.zsc.blms.service.ReaderService;
import cn.edu.zsc.blms.domain.Reader;

import java.util.Set;

public class ReaderServiceImpl extends BaseServiceImpl<Reader>implements ReaderService {
    /**
     * 单例
     */
    private static ReaderService singleton;

    /**
     * 私有构造方法
     */
    private ReaderServiceImpl() {

    }
    /**
     * 获取单例，非线程安全
     *
     * @return ReaderService单例
     */
    public static ReaderService getSingleton(){
        if(singleton==null){
            singleton=new cn.edu.zsc.blms.service.impl.array.collection.ReaderServiceImpl();
        }
        return singleton;
    }
    /**
     * ID计数器
     */
    public int idCounter;

    /**
     * 添加读者
     */
    @Override
    public void create(){
        System.out.println("请输入姓名：");
        String name= App.input.nextLine();
        System.out.println("请输入电话");
        String phone=App.input.nextLine();
        Reader reader =new Reader(idCounter,name,phone);
        DATA.put(reader.id,reader);
        System.out.println("成功增加一名读者！");
        idCounter++;
    }
    /**
     * 禁用读者
     */
    @Override
    public void disable(){
        //TODO:禁用读者
        System.out.print("请输入要禁用的读者ID：");
        Reader reader=null;
        try{
            reader=getOne();
        }catch(EntityNotExistException e) {
            System.out.println(e.getMessage());
        }
        if(reader!=null){
            reader.disabled=true;
            System.out.println("该用户已被禁用");
        }
    }
    /**
     * 修改读者
     */
    @Override
    public void update(){
        //TODO:修改读者
        System.out.println("请输入要编辑的读者ID：");
        Reader reader=null;
        try{
            reader=getOne();
        }catch(EntityNotExistException e){
            System.out.println(e.getMessage());
        }
        if(reader!=null){
            System.out.print("请输入姓名，直接按回车表示不修改：");
            String name=App.input.nextLine();
            reader.name="".equals(name)? reader.name:name;
            System.out.println("请输入电话，直接按回车表示不修改：");
            String phone=App.input.nextLine();
            reader.phone="".equals(phone)? reader.phone : phone;
            System.out.println("该用户的信息已被修改");
        }
    }
    /**
     * 查询读者
     */
    @Override
    public void query(){
        //TODO:查询读者
        System.out.println("请输入要查询的读者姓名：");
        String name=App.input.nextLine();
        //TODO:根据读者姓名模糊查询，并打印查询结果，暂且打印所有读者信息
        Set<Integer> ids=DATA.keySet();
        for(Integer id : ids){
            Reader reader=DATA.get(id);
            if(reader.name!=null && reader.name.contains(name)){
                System.out.println(reader);
            }
        }
    }

}
